var peticion = null;
function marcarDesmarcar(elemento) {
	var elementoFila = elemento.parentNode.parentNode;
	if (elemento.checked) {
		elementoFila.removeAttribute('class');
		elemento.setAttribute('name', elemento.id);
		elemento.setAttribute('class', "comprar");
	} else {
		elementoFila.setAttribute('class', 'eliminar');
		elemento.removeAttribute('name');
		elemento.removeAttribute('class');
		elemento.setAttribute('class', "NOcomprar");
	}
	cargarTablaCalculoCarrito();
}
function crearCadenaURL() {
	var listaElementosComprar = document.getElementsByClassName('comprar');
	var codigoPostal = document.getElementById('codigoPostal').value
	var numeroPedido = document.getElementById('numeroPedido').value;

	var cadena = "numeroPedido=" + numeroPedido + "&codigoPostal="
			+ codigoPostal;

	for ( var i = 0; i < listaElementosComprar.length; i++) {
		cadena += "&" + listaElementosComprar[i].name + "="
				+ listaElementosComprar[i].name;
	}
	return cadena;
}
function inicializa_xhr() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}
function cargarTablaCalculoCarrito() {
	peticion = inicializa_xhr();
	if (peticion) {
		peticion.onreadystatechange = mostrarTablaCalculoCarrito;
		peticion.open("POST", "obtenerCalculoTablaPedidos", true);
		peticion.setRequestHeader("Content-Type",
				"application/x-www-form-urlencoded");
		var cadenaConParametros = crearCadenaURL();
		peticion.send(cadenaConParametros);
	}
}
function mostrarTablaCalculoCarrito() {
	if (peticion.readyState == 4) {
		if (peticion.status == 200) {
			var divResultadoBusqueda = document
					.getElementById("divResultadoBusqueda");
			divResultadoBusqueda.innerHTML = peticion.responseText;
		}
	}
}
function cargaMunicipios() {
	var codigoPostal = document.getElementById("codigoPostal").value;
	if (!isNaN(codigoPostal)) {
		peticion = inicializa_xhr();
		if (peticion) {
			peticion.onreadystatechange = muestraMunicipios;
			peticion.open("POST", "obtenerPoblacion", true);
			peticion.setRequestHeader("Content-Type",
					"application/x-www-form-urlencoded");
			peticion.send("codigoPostal=" + codigoPostal);
		}
	} else {

		var provincia = document.getElementById("provincia");
		var municipio = document.getElementById("localidad");
		provincia.length = 0;
		municipio.length = 0;
		provincia.setCustomValidity("codigo postal invalido");
		municipio.setCustomValidity("codigo postal invalido");
		if (!isNaN(codigoPostal)) {
			provincia.options[0] = new Option("Introduzca un codigo postal");
			document.getElementById("codigoPostal").setCustomValidity(
					"Introduzca un codigo postal");

		} else {
			provincia.options[0] = new Option(
					"El codigo postal tiene que ser numerico");
			document.getElementById("codigoPostal").setCustomValidity(
					"El codigo postal tiene que ser numerico");
		}
		municipio.options[0] = new Option("Seleccione una provincia");
	}
}

function muestraMunicipios() {
	if (peticion.readyState == 4) {
		if (peticion.status == 200) {
			var municipio=document.getElementById("localidad");
			var lista = document.getElementById("localidad");
			var municipios = eval('(' + peticion.responseText + ')');
			lista.options.length = 0;
			var i = 0;
			for ( var codigo in municipios) {
				lista.options[i] = new Option(municipios[codigo], codigo);
				i++;
			}
			if (i == 0) {
				provincia.length = 0;
				provincia.options[0] = new Option("Codigo postal invalido");
				municipio.length = 0;
				municipio.options[0] = new Option("Seleccione una provincia");
				document.getElementById("codigoPostal").setCustomValidity(
						"El codigo postal es incorrecto");
				provincia.setCustomValidity("codigo postal invalido");
				municipio.setCustomValidity("codigo postal invalido");
			} else {
				document.getElementById("codigoPostal").setCustomValidity("");
				document.getElementById("provincia").setCustomValidity("");
				document.getElementById("localidad").setCustomValidity("");
				cargarProvincias();
			}
		}
	}
}
function cargarProvincias() {

	var codigoPostal = document.getElementById("codigoPostal").value;
	if (!isNaN(codigoPostal) && (codigoPostal.length == 5)) {
		peticion = inicializa_xhr();
		if (peticion) {
			peticion.onreadystatechange = muestraProvincias;
			peticion.open("POST", "obtenerProvincias", true);
			peticion.setRequestHeader("Content-Type",
					"application/x-www-form-urlencoded");
			peticion.send("codigoPostal=" + codigoPostal);
			document.getElementById("codigoPostal").setCustomValidity("");
		}
	} else {
		var provincia = document.getElementById("provincia");
		var municipio = document.getElementById("municipio");
		provincia.length = 0;
		municipio.length = 0;
		provincia.setCustomValidity("codigo postal invalido");
		municipio.setCustomValidity("codigo postal invalido");
		if (!isNaN(codigoPostal)) {
			provincia.options[0] = new Option("Introduzca un codigo postal");
			document.getElementById("codigoPostal").setCustomValidity(
					"Introduzca un codigo postal");

		} else {
			provincia.options[0] = new Option(
					"El codigo postal tiene que ser numerico");
			document.getElementById("codigoPostal").setCustomValidity(
					"El codigo postal tiene que ser numerico");

		}
		municipio.options[0] = new Option("Seleccione una provincia");
	}
}
function muestraProvincias() {
	if (peticion.readyState == 4) {
		if (peticion.status == 200) {
			var lista = document.getElementById("provincia");
			var respuesta = peticion.responseText;
			var provincias = eval('(' + peticion.responseText + ')');
			var i = 0;
			var provincia = document.getElementById("provincia");
			var municipio = document.getElementById("municipio");
			for ( var codigo in provincias) {
				lista.options[0] = new Option(provincias[codigo], codigo);
				i++;
			}
			if (i == 0) {
				provincia.length = 0;
				provincia.options[0] = new Option("Codigo postal invalido");

				municipio.length = 0;
				municipio.options[0] = new Option("Seleccione una provincia");
				document.getElementById("codigoPostal").setCustomValidity(
						"El codigo postal es incorrecto");
				provincia.setCustomValidity("codigo postal invalido");
				municipio.setCustomValidity("codigo postal invalido");
			} else {
				document.getElementById("codigoPostal").setCustomValidity("");
				provincia.setCustomValidity("");
				document.getElementById("localidad").setCustomValidity("");

			}
		}
	}
}
function siguientePaso(origen, destino) {
	document.getElementById(origen).style.display = "none";
	document.getElementById(destino).style.display = "block";
	cargarTablaCalculoCarrito();
	
	return false;
}
function CargarConfirmarCompra() {
	peticion = inicializa_xhr();
	var nombre=document.getElementById('nombre').value;
	var apellidos=document.getElementById('apellidos').value;
	var direccion=document.getElementById('direccion').value;
	var lista = document.getElementById("provincia");
	var provincia = lista.options[lista.selectedIndex].value;	
	var lista = document.getElementById("localidad");
	var localidad = lista.options[lista.selectedIndex].value;
	var baseImponible=document.getElementById("baseImponible").value;
	var descuento=document.getElementById("descuento").value;
	var iva=document.getElementById("iva").value;
	var dni=document.getElementById("dni").value;
	var formaPago=getRadioButtonSelectedValue(document.getElementsByName("formaPago"));
	var GastosDeEnvio=document.getElementById("GastosDeEnvio").value;
	
	
	if (peticion) {
		peticion.onreadystatechange = mostrarConfirmarCompra;
		peticion.open("POST", "finalizarCompra", true);
		peticion.setRequestHeader("Content-Type",
				"application/x-www-form-urlencoded");
		var cadenaConParametros = crearCadenaURL();
		cadenaConParametros+="&nombre="+nombre+
		"&apellidos="+apellidos+"&direccion="+direccion+
		"&provincia="+provincia+"&localidad="+localidad+
		"&baseImponible="+baseImponible+
		"&descuento="+descuento+
		"&iva="+iva+
		"&GastosDeEnvio="+GastosDeEnvio+
		"&dni="+dni+
		"&formaPago="+formaPago;
		peticion.send(cadenaConParametros);
	}
}


function mostrarConfirmarCompra() {
	if (peticion.readyState == 4) {
		if (peticion.status == 200) {
			var contenedor = document.getElementById("contenedor");
			
			contenedor.innerHTML = peticion.responseText;
			
		}
	}
}

function isDNI(elemento) {
	var dni = elemento.value;
	var numero, letra;
	var let2;
	var expresion_regular_dni = /^[XYZ]?\d{5,8}[TRWAGMYFPDXBNJZSQVHLCKET]$/;

	dni = dni.toUpperCase();
	if (expresion_regular_dni.test(dni) == true) {
		numero = dni.substr(0, dni.length - 1);
		numero = numero.replace('X', 0);
		numero = numero.replace('Y', 1);
		numero = numero.replace('Z', 2);
		let2 = dni.substr(dni.length - 1, 1);
		numero = numero % 23;
		letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
		letra = letra.substring(numero, numero + 1);
		if (letra != let2) {
			//alert('Dni erroneo, la letra del NIF no se corresponde');
			elemento.setCustomValidity("La letra es incorrecta");
		} else {
			elemento.setCustomValidity("");
		}
	} else {
		//alert('Dni erroneo, formato no válido');
		elemento.setCustomValidity("El formato del dni es incorrecto");
	}
}
function getRadioButtonSelectedValue(ctrl)
{
    for(i=0;i<ctrl.length;i++)
        if(ctrl[i].checked) return ctrl[i].value;
}
